package com.fsds.crem.core.generic;

import java.util.List;

/**
 * GenericService的实现类, 其他的自定义 ServiceImpl, 继承自它,可以获得常用的增删查改操作, 未实现的方法有 子类各自实现.
 * 
 * <pre>
 * 历史记录：
 * 2016-2-26 Dean
 * 	新建文件
 * </pre>
 * 
 * @author 
 * <pre>
 * SD
 * 
 * PG
 * 	dean
 * UT
 *
 * MA
 * </pre>
 * @version 1.0
 *
 * <p/> $Id$
 *
 * @param <Model> 代表数据库中的表 映射的Java对象类型
 * @param <PK> 代表对象的主键类型
 */
public abstract class GenericServiceImpl<Model, PK> implements GenericService<Model, PK> {

	/**
	 * <pre>
	 * 2016-2-26 Dean
	 * 	定义成抽象方法,由子类实现,完成dao的注入
	 * </pre>
	 * 
	 * @return
	 */
	public abstract GenericDao<Model, PK> getDao();

	/*
	 * 2016-2-26 dean
	 * 
	 * @see com.fsds.crem.core.generic.GenericService#create(java.lang.Object)
	 */
	public int create(Model model) {

		return getDao().create(model);
	}

	/*
	 * 2016-2-26 dean
	 * 
	 * @see com.fsds.crem.core.generic.GenericService#update(java.lang.Object)
	 */
	public int update(Model model) {

		return getDao().update(model);
	}

	/*
	 * 2016-2-26 dean
	 * 
	 * @see com.fsds.crem.core.generic.GenericService#delete(java.lang.Object)
	 */
	public int delete(PK id) {

		return getDao().delete(id);
	}

	/*
	 * 2016-2-26 dean
	 * 
	 * @see com.fsds.crem.core.generic.GenericService#getById(java.lang.Object)
	 */
	public Model getById(PK id) {

		return getDao().getById(id);
	}

	/*
	 * 2016-2-26 dean
	 * 
	 * @see com.fsds.crem.core.generic.GenericService#findAll()
	 */
	@Override
	public List<Model> findAll() {

		return getDao().findAll();
	}
}
